From aa201ab749ba2b4925d664de6606a54dc60de869 Mon Sep 17 00:00:00 2001 From: Alex Burka Date: Wed, 12 Jul 2017 15:31:30 -0400 Subject: [PATCH] use shell helpers to condense output --- src/cargo/ops/cargo_install.rs | 24 +++++++++++++++--------- tests/install.rs | 9 +-------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/cargo/ops/cargo_install.rs b/src/cargo/ops/cargo_install.rs index 2ca358028..afde6edde 100644 --- a/src/cargo/ops/cargo_install.rs +++ b/src/cargo/ops/cargo_install.rs @@ -4,12 +4,13 @@ use std::env; use std::ffi::OsString; use std::fs::{self, File}; use std::io::prelude::*; -use std::io::{self, SeekFrom}; +use std::io::SeekFrom; use std::path::{Path, PathBuf}; use std::sync::Arc; use semver::Version; use tempdir::TempDir; +use termcolor::Color::Red; use toml; use core::{SourceId, Source, Package, Dependency, PackageIdSpec}; @@ -67,23 +68,28 @@ pub fn install(root: Option<&str>, install_one(root.clone(), map, krates.into_iter().next(), source_id, vers, opts, force, true)?; } else { - let mut success = vec![]; - let mut errors = vec![]; + let mut succeeded = vec![]; + let mut failed = vec![]; let mut first = true; for krate in krates { let root = root.clone(); let map = map.clone(); match install_one(root, map, Some(krate), source_id, vers, opts, force, first) { - Ok(()) => success.push(krate), - Err(e) => errors.push(format!("{}: {}", krate, e)) + Ok(()) => succeeded.push(krate), + Err(e) => { + opts.config.shell().error(e)?; + failed.push(krate) + } } first = false; } - writeln!(io::stderr(), - "\n\nSUMMARY\n\nSuccessfully installed: {}\n\nErrors:\n\t{}", - success.join(", "), - errors.join("\n\t"))?; + if !succeeded.is_empty() { + opts.config.shell().status("Successfully installed", succeeded.join(", "))?; + } + if !failed.is_empty() { + opts.config.shell().status_with_color("Failed to install", failed.join(", "), Red)?; + } } // Print a warning that if this directory isn't in PATH that they won't be diff --git a/tests/install.rs b/tests/install.rs index ac4ec9b82..93dd71fc1 100644 --- a/tests/install.rs +++ b/tests/install.rs @@ -72,14 +72,7 @@ fn multiple_pkgs() { [COMPILING] bar v0.0.1 [FINISHED] release [optimized] target(s) in [..] [INSTALLING] {home}[..]bin[..]bar[..] - - -SUMMARY - -Successfully installed: foo, bar - -Errors: - +Successfully installed foo, bar warning: be sure to add `[..]` to your PATH to be able to run the installed binaries ", home = cargo_home().display()))); -- 2.30.2